package ar.edu.utn.frba.tadp.tp.grupo4.fotomultas_ui;

import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
import org.joda.time.DateTime;
import org.uqbar.commons.model.ObservableObject;
import org.uqbar.commons.utils.ApplicationContext;
import org.uqbar.commons.utils.Home;
import ar.edu.utn.frba.tadp.tp.grupo4.fotomultas.capturas.Captura;
import ar.edu.utn.frba.tadp.tp.grupo4.fotomultas.exceptions.EmptyListCapturasException;
import ar.edu.utn.frba.tadp.tp.grupo4.fotomultas.homes.AdministradorCapturas;
import ar.edu.utn.frba.tadp.tp.grupo4.fotomultas.vehiculos.Vehiculo;

public class AsignacionCaptura extends ObservableObject{

	public static final String VEHICULO = "vehiculo";
	
	private Vehiculo vehiculo;
	private final Home<Captura> capturasPendientesHome;
	private Home<Vehiculo> vehiculosHome;
	private AdministradorCapturas administradorCapturas;

	public AsignacionCaptura(Home<Captura> visor) {
		this.capturasPendientesHome = visor;
	}

	// ********************************************************
	// ** Acciones
	// ********************************************************

	public void asignarCaptura(Captura captura) {
		MessageBox msg = new MessageBox(new Shell());	
		administradorCapturas = ApplicationContext.getInstance().getSingleton(AdministradorCapturas.class);
		vehiculosHome = ApplicationContext.getInstance().getHome(Vehiculo.class);
		try{			
			this.getVehiculo().addCaptura(administradorCapturas.removerPendiente(captura));
			this.vehiculosHome.add(this.getVehiculo());	
			msg.setMessage("Se asigno correctamente la captura al vehiculo: " + this.getVehiculo().getPatente());
			msg.open();
		}
		catch(EmptyListCapturasException eex){
			msg.setMessage("No hay capturas pendientes.");
			msg.open();
		}
	}

	// ********************************************************
	// ** Accesorios
	// ********************************************************
	
	public Vehiculo getVehiculo(){
			return this.vehiculo;
	}
	
	public void setVehiculo(Vehiculo vehiculo){
		this.setFieldValue(VEHICULO, vehiculo);
	}
}
